Построение графиков в LaTeX/PGFPlots / Хабр |
您所在的位置:网站首页 › documentclass{article} › Построение графиков в LaTeX/PGFPlots / Хабр |
![]() Данная статья посвящена описанию работы с пакетом PGFPlots, разработанного для популярной настольной издательской системы LaTeX. Однако, если вы даже не знакомы с последней, это не повод расстраиваться и бросать чтение этой статьи, ведь, возможно, те замечательные примеры, которые будут далее приведены, и необычайная мощность и удобство PGFPlots вдохновят вас на изучение LaTeX. Введение и мотивация Существует большое число различных систем для построения графиков и визуализации данных. Конечно, нельзя сказать, что PGFPlots может заменить их все (например, при работе со средой R иногда удобнее положится на её собственный механизм построения графиков и просто добавлять построенные графики в документ как изображения), однако существует определенная и значительная ниша, в которой применять его удобно: учебные материалы; различные отчёты, которые будучи студентами, наверно делали все в той или иной мере; простейшая визуализация данных и т.п.Ниже показаны примеры, которые не только подтверждают сказанное, но и показывают, что возможности данной системы зачастую даже превосходят наши повседневные требования к такого рода системам (щелкните на изображение, чтобы посмотреть исходник примера): ![]() ![]() ![]() ![]() Для работы с примерами потребуется установленный дистрибутив LaTeX. К сожалению, его установка и настройка выходят за рамки данной статьи, поэтому те, кто не желает возиться с его установкой и настройкой, но хотят поэкспериментировать с возможностями, описанными здесь, могут попробовать такие онлайн-сервисы, как Overleaf, ShareLaTeX и Papeeria. Итак, начнём! Подключение пакета Для подключения PGFPlots достаточно добавить в преамбулу документа команду: \usepackage{pgfplots} После этого пакет будет загружен и установлен. Однако если же этого у вас по тем или иным причинам не происходит, то следует обратиться к документации (стр.11), где подробно расписаны различные способы установки данного пакета. Кроме того, следует обратить внимание на то, что PGFPlots проектировался с расчётом на обратную совместимость, и проекты, созданные с использованием старых версий данного пакета будут открываться и отображаться без изменений, вне зависимости от того, насколько новая версия стоит у вас. Однако в пакет, тем не менее, вносятся изменения, которые нарушают обратную совместимость и для того, чтобы их подключить, необходимо в преамбуле прописать явным образом используемую версию (в примере ниже указана версия 1.9): \pgfplotsset{compat=1.9} Основы построения графиков Рассмотрим сначала простейший пример построения графика и на нём объясним назначение основных компонентов, из которых состоит практически любой график в PGFPlots:
Окружение, устанавливающее оси графика Далее, внутри указанного выше окружения, размещается ещё одно окружение, определяющее оси графика. Ниже в таблице перечислены основные виды таких окружений: Тип окружения Назначение axis Стандартные оси с линейным масштабированием semilogxaxis Логарифмическое масштабирование оси x и стандартное масштабирование оси y semilogyaxis Логарифмическое масштабирование оси y и стандартное масштабирование оси x loglogaxis Логарифмическое масштабирование обеих осей Обычно многие настройки отображения графиков указываются в свойствах данного окружения (в примере выше указан заголовок title, название подписи к оси абсцисс xlabel, название подписи к оси ординат ylabel и количество дополнительных – в том смысле, что они не подписываются – делений между основными minor tick num). При этом следует понимать, что опции могут быть указаны не только таким образом (локально), но также и более глобально, например, при помощи стилей или путём добавления в преамбулу документа строчки, как показано в примере ниже: \pgfplotsset{title = Undefined chart} Таких свойств – превеликое множество, они позволяют настроить практически любой аспект внешнего вида графика и все они перечислены в руководстве. Приведём для примера ниже список наиболее типичных для рассматриваемого окружения свойств: Свойство Назначение Возможные значения width, height Устанавливают ширину и высоту графика соответственно domain = min:max Устанавливает область значений для функции в диапазоне от min до max xmin, xmax Устанавливают минимальное и максимальное значение на оси абсцисс соответственно ymin, ymax Устанавливают минимальное и максимальное значение на оси ординат соответственно xlabel, ylabel Устанавливают подпись к оси абсцисс и оси ординат соответственно view Устанавливает поворот камеры, при этом свойство указывается следующим образом view = {азимут}{угол возвышения}; при этом азимут – это угол между положением камеры и осью z, а угол возвышения – это угол между положением камеры и осью x. grid Указывает тип сетки major – линии сетки проходят только через основные деления, minor – линии сетки проходят через дополнительные деления (между основными), both – линии сетки проходят через оба вида делений, none – сетка отсутствует [по умолчанию] colormap Устанавливает используемую цветовую схему hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet и другие, созданные пользователем Добавление графика Напомним, что в рассмотренном примере график добавлялся при помощи команды addplot, у которой в качестве основного параметра была указана функция, чей график был построен, и цвет данного графика: \addplot[blue] {e^x}; Использованная команда addplot (для двумерного графика) и её аналог addplot3 (для трёхмерного графика) являются наиболее распространенным средством для того, чтобы создать график. Общий формат данной команды следующий: \addplot[] ; Опции options являются необязательным параметром, в которых указываются: тип графика, его цвет, стиль, тип маркеров и т.п. Входные данные input data определяют на основании чего будет строится график, в примере в качестве входных данных была указана функция, однако, как будет показано далее, выбор входных данных гораздо шире. Как небольшой итог Итак, подведём небольшой итог нашего знакомства с PGFPlots. Все графики размещаются в окружение tikzpicture: \begin{tikzpicture} ... \end{tikzpicture} Для отображения графика, необходимо создать окружение, определяющего тип используемых осей в нём, например, axis: \begin{axis} ... \end{axis} Затем внутри созданного окружения добавляются графики чаще всего при помощи команд \addplot и \addplot3: \addplot[] ; Входные данные Не имея никакого желания, дублировать написанное в документации (стр.40 — 63) и излагать все тонкости работы со входными данными, мы остановимся на рассмотрении основных способов в наиболее общем виде, и приведём ряд примеров их поясняющих. Построение графиков на основе математического выражения Общий вид команды построения графика на основе математического выражения должен быть уже знаком: \addplot[] {math_expression} ; Для обработки математического выражения используется встроенный парсер, который имеет достаточный близкий синтаксис к многим системам компьютерной алгебры, и поэтому работа с ним не представляет особой сложности. Полный список математических операторов и функций можно найти в этом документе (стр.933). Часть из них для составления общего впечатления приведена ниже. Оператор Назначение + Оператор сложения - Оператор вычитания * Оператор умножения / Оператор деления ^ Оператор возведения в степень mod Оператор взятия остатка ! Постфиксный оператор вычисления факториала , , ==, =, = Операторы сравнения Функция Назначение abs Функция взятия модуля sin, cos, tan, asin, acos, atan Основные тригонометрические функции и обратные им ln, log2, log10 Натуральный, двоичный и десятичный логарифмы deg Функция преобразования радиан в градуса (она особенно полезна, если учесть, что по умолчанию рассматриваемый парсер работает именно с градусами, а не радианами) После того, как математическое выражение будет обработано, фактически, будет построено множество точек (количество этих точек можно изменить при помощи свойства графика samples), на основе которых будет построен тот или иной график. Как иллюстрация сказанного, ниже приведены одинаковые графики с различным значением свойства samples: ![]()
Ниже приведён пример построения 3D графика на основе математического выражения:
Построение графиков на основе вводимых координат Данный способ гораздо проще, чем предыдущий и подразумевает, что пользователь просто укажет список упорядоченных пар (x,y) (для двумерного графика) или (x,y,z) (для трёхмерного графика) и на их основе впоследствии будет построен график. \addplot[] coordinates {} Сразу рассмотрим пример: ![]() Построение графиков на основе таблицы Построение графиков на основе таблицы является одним из очень распространенных и удобных способов построения различных графиков. \addplot table [] {(file or inline table)}. В первую очередь, определим основные принципы работы с таблицами: Строки разделяются символов перехода на новую строку. Для использования в такой роли символа \\ необходимо установить следующее свойство: table/row sep = \\ Столбцы обычно разделяются пробелами или символами табуляции. Установить эту роль для других символов можно при помощи следующего свойства: table/col sep = space|tab|comma|colon|semicolon|braces|&|ampersand Любая строчка, начинающаяся с # или % будет проигнорирована Пример корректной таблицы приведен ниже: a b c 1 1 1 2 3 4 3 5 5 4 8 6 5 2 7 Параметр column selection определяет соответствие между определенной осью (или источником мета-информации, о которой мы чуть-чуть скажем позже) и столбцом, причем соответствие задаётся по первой строчке таблицы, что наглядно видно в примерах далее. Построение графика на основе встроенной таблицы (inline) ![]() Построение графика на основе таблицы во внешнем файле Рассмотрим более практический пример. По следующей ссылке лежит файл .csv, в котором содержатся данные о демографической ситуации в России (РСФСР) за примерно век её истории.
Настройка графиков Теперь, когда мы разобрались с тем, как могут выглядеть входные данные для графика, пора уделить внимание тому, как настроить графики, сделать их более понятными и наглядными. Легенда графика Легендой называется подпись, поясняющая то, что изображено на графике. Особенно полезно использование легенды, когда у нас имеется несколько различных графиков.
Для описание легенды можно использовать команду \legend{...}, внутри которой через запятую перечисляются описания графиков (PGFPlots определяет соответствие между описанием и графиком по порядку следования описаний и порядку добавления самих графиков).
Кроме того, в нём использовалось свойство legend pos, которое позволяет указать положение легенды на графике (south west, south east, north west, north east, outer north east ). Пользовательские стили Рассмотрим простейший пример: у нас в документе принято, чтобы график, отражающий экспериментальные данные, выделялся красным цветом, а график функции, отражающий графики математической модели, имел синий цвет. Так было принято ровно до тех пор, пока в издательстве нам не сказали, что они принимают только черно-белые статьи и, соответственно, внешний вид графиков необходимо менять, и в рамках большого документа – это сложная и муторная задача. Поэтому гораздо лучше в таких ситуациях описать стили в одном месте документа и затем их применять к графикам. Для создания таких пользовательских стилей известная нам команда \pgfplotsset со следующими аргументами: \pgfplotsset{/.style={}};
Сразу рассмотрим пример, аналогичный тому, о котором мы говорили ранее:
Как и всегда, средств для их настройки очень много, даже в документации, на которую мы ссылаемся, описаны не все из них. Рассмотрим наиболее типичные способы настройки. Выбор типа маркера выполняется при помощи следующего свойства: mark = Настройка трёх основных параметров (размера, цвета заливки маркера и его контура) может быть выполнена при помощи следующего свойства: mark options={scale = , fill = , draw = Заранее предустановленных цветов очень много, но всегда можно добавить свой, например, при помощи следующей команды: \definecolor{ |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |